/*
 * GraficoBarras.h
 *
 *  Created on: 09/06/2012
 *      Author: sebastian
 */

#ifndef GRAFICOBARRAS_H_
#define GRAFICOBARRAS_H_

#include <list>
#include <string>
#include <cairo/cairo.h>
#include <gtkmm-2.4/gtkmm/drawingarea.h>

#define BARS_X_OFFSET_FACTOR 0.15
#define BARS_Y_OFFSET_FACTOR 0.7

struct barras {
	std::list<unsigned int> valores;
	std::string nombre;
};

class GraficoBarras : public Gtk::DrawingArea {
public:
	GraficoBarras();
	virtual ~GraficoBarras();
	void setColor(float cRojo, float cVerde, float cAzul);
	void agregarValor(std::string nombre, std::list<float> valores, float rad, float v, float a);
	void dibujarGrafico();
	void agregarBarras(std::list<unsigned int> valores, std::string nombre);
	void agregarNombre(std::string nombre);
private:
	std::list<barras*> conjuntosBarras;
	std::vector<std::string> nombresBarras;
	void dibujarBarras(const Cairo::RefPtr<Cairo::Context>& cr, barras* bars, unsigned int height, unsigned int width, unsigned int current, unsigned int total);
	float maxValue;
protected:
	virtual bool on_expose_event(GdkEventExpose* event);
};

#endif /* GRAFICOBARRAS_H_ */
